Việc kết nối giữa Ruby và C đại diện cho một cuộc hôn nhân chiến lược giữa năng suất phát triển cấp cao của Ruby (sự tinh tế) và tốc độ thực thi cấp thấp của C (hiệu suất). Mọi tiến trình Ruby đều bắt đầu từ bộ thông dịch dựa trên C; lệnh echo 'puts "Xin chào"' | ruby minh họa điểm vào nơi mà logic lưu trữ C khởi tạo môi trường.
1. Đồng tiền chung (VALUE)
Ở trung tâm của sự kết nối này là kiểu VALUE loại, một tham chiếu C đại diện cho mọi đối tượng Ruby, bao gồm cả Qnil và chuỗi được mã hóa theo UTF-8. Nó cung cấp một giao diện thống nhất để truyền dữ liệu giữa hai ngôn ngữ.
2. Giao tiếp và xuất khẩu
Sử dụng Các hàm tiện ích như rb_define_class_under, các nhà phát triển xuất logic định nghĩa bằng C vào không gian tên Ruby. Kiến trúc này cho phép các tập tin nguồn thư viện cơ sở có yêu cầu hiệu suất cao được viết bằng C nhưng vẫn có thể truy cập như các đối tượng Ruby chuẩn. Tập tin nguồn thư viện cơ sở được viết bằng C trong khi vẫn có thể truy cập như các đối tượng Ruby tiêu chuẩn.
Sự phối hợp này đảm bảo rằng các cấu trúc phức tạp RData trong C được quản lý bởi GC của Ruby, cho phép các động cơ hoạt động với tần suất cao chạy bên trong các lớp bao bọc Ruby tinh tế.